package com.boolib.tree.face;


import com.boolib.tree.exception.IsTopCategoryException;
import com.boolib.tree.exception.NotFoundItemException;

import java.util.List;

public interface ITreeModelHandler<T> {




    /**
     * 找爸爸
     * @param id    当前分类id
     * @return
     */
    T findParent(Integer id) throws NotFoundItemException, IsTopCategoryException;

    Integer findParentId(Integer id) throws NotFoundItemException;


    /**
     * 找所有父辈 (一直条直线  1-1-1-1-1 可以根据大小排序  因为一个儿子只可能有一个父亲)
     * @param id    当前分类id
     * @return
     */
    List<T> findParents(Integer id) throws NotFoundItemException;

    List<Integer> findParentsId(Integer id) throws NotFoundItemException;


    /**
     * 找所有兄弟
     * @param id    当前分类id
     * @return
     */
    List<T> findBrothers(Integer id) throws NotFoundItemException;

    List<Integer> findBrothersId(Integer id) throws NotFoundItemException;



    /**
     * 找所有子辈 （一个树结构 , 儿子->孙子集合 -> 孙子的儿子集合）
     * @param id    当前分类id
     * @return
     */
    List<T> findChildren(Integer id) throws NotFoundItemException;

    List<Integer> findChildrenId(Integer id) throws NotFoundItemException;

}
